package com.ruoyi.money.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 用户提现记录对象 sys_user_withdrawal
 * 
 * @author ruoyi
 * @date 2025-08-18
 */
public class SysUserWithdrawal extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 提现记录ID */
    private Long withdrawalId;

    /** 用户ID */
    @Excel(name = "用户ID")
    private Long userId;

    /** 提现金额 */
    @Excel(name = "提现金额")
    private BigDecimal withdrawalAmount;

    /** 实际到账金额 */
    @Excel(name = "实际到账金额")
    private BigDecimal actualAmount;

    /** 手续费金额 */
    @Excel(name = "手续费金额")
    private BigDecimal feeAmount;

    /** 提现状态 */
    @Excel(name = "提现状态")
    private String withdrawalStatus;

    /** 提现方式 */
    @Excel(name = "提现方式")
    private String withdrawalType;

    /** 收款账户信息 */
    @Excel(name = "收款账户信息")
    private String accountInfo;

    /** 收款人姓名 */
    @Excel(name = "收款人姓名")
    private String accountName;

    /** 收款账号 */
    @Excel(name = "收款账号")
    private String accountNumber;

    /** 开户银行名称 */
    @Excel(name = "开户银行名称")
    private String bankName;

    /** 开户支行 */
    @Excel(name = "开户支行")
    private String bankBranch;

    /** 申请时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applyTime;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date approveTime;

    /** 处理时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "处理时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date processTime;

    /** 完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date completeTime;

    /** 拒绝原因 */
    @Excel(name = "拒绝原因")
    private String rejectReason;

    /** 操作员ID */
    private Long operatorId;

    /** 操作员姓名 */
    @Excel(name = "操作员姓名")
    private String operatorName;

    /** 交易流水号 */
    @Excel(name = "交易流水号")
    private String transactionNo;

    /** 第三方支付流水号 */
    @Excel(name = "第三方支付流水号")
    private String thirdPartyNo;

    /** 提现前余额 */
    @Excel(name = "提现前余额")
    private BigDecimal balanceBefore;

    /** 提现后余额 */
    @Excel(name = "提现后余额")
    private BigDecimal balanceAfter;

    /** 来源组织ID */
    @Excel(name = "来源组织ID")
    private Long sourceOrgId;

    /** 删除标志 */
    private String delFlag;

    public void setWithdrawalId(Long withdrawalId) 
    {
        this.withdrawalId = withdrawalId;
    }

    public Long getWithdrawalId() 
    {
        return withdrawalId;
    }

    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }

    public void setWithdrawalAmount(BigDecimal withdrawalAmount) 
    {
        this.withdrawalAmount = withdrawalAmount;
    }

    public BigDecimal getWithdrawalAmount() 
    {
        return withdrawalAmount;
    }

    public void setActualAmount(BigDecimal actualAmount) 
    {
        this.actualAmount = actualAmount;
    }

    public BigDecimal getActualAmount() 
    {
        return actualAmount;
    }

    public void setFeeAmount(BigDecimal feeAmount) 
    {
        this.feeAmount = feeAmount;
    }

    public BigDecimal getFeeAmount() 
    {
        return feeAmount;
    }

    public void setWithdrawalStatus(String withdrawalStatus) 
    {
        this.withdrawalStatus = withdrawalStatus;
    }

    public String getWithdrawalStatus() 
    {
        return withdrawalStatus;
    }

    public void setWithdrawalType(String withdrawalType) 
    {
        this.withdrawalType = withdrawalType;
    }

    public String getWithdrawalType() 
    {
        return withdrawalType;
    }

    public void setAccountInfo(String accountInfo) 
    {
        this.accountInfo = accountInfo;
    }

    public String getAccountInfo() 
    {
        return accountInfo;
    }

    public void setAccountName(String accountName) 
    {
        this.accountName = accountName;
    }

    public String getAccountName() 
    {
        return accountName;
    }

    public void setAccountNumber(String accountNumber) 
    {
        this.accountNumber = accountNumber;
    }

    public String getAccountNumber() 
    {
        return accountNumber;
    }

    public void setBankName(String bankName) 
    {
        this.bankName = bankName;
    }

    public String getBankName() 
    {
        return bankName;
    }

    public void setBankBranch(String bankBranch) 
    {
        this.bankBranch = bankBranch;
    }

    public String getBankBranch() 
    {
        return bankBranch;
    }

    public void setApplyTime(Date applyTime) 
    {
        this.applyTime = applyTime;
    }

    public Date getApplyTime() 
    {
        return applyTime;
    }

    public void setApproveTime(Date approveTime) 
    {
        this.approveTime = approveTime;
    }

    public Date getApproveTime() 
    {
        return approveTime;
    }

    public void setProcessTime(Date processTime) 
    {
        this.processTime = processTime;
    }

    public Date getProcessTime() 
    {
        return processTime;
    }

    public void setCompleteTime(Date completeTime) 
    {
        this.completeTime = completeTime;
    }

    public Date getCompleteTime() 
    {
        return completeTime;
    }

    public void setRejectReason(String rejectReason) 
    {
        this.rejectReason = rejectReason;
    }

    public String getRejectReason() 
    {
        return rejectReason;
    }

    public void setOperatorId(Long operatorId) 
    {
        this.operatorId = operatorId;
    }

    public Long getOperatorId() 
    {
        return operatorId;
    }

    public void setOperatorName(String operatorName) 
    {
        this.operatorName = operatorName;
    }

    public String getOperatorName() 
    {
        return operatorName;
    }

    public void setTransactionNo(String transactionNo) 
    {
        this.transactionNo = transactionNo;
    }

    public String getTransactionNo() 
    {
        return transactionNo;
    }

    public void setThirdPartyNo(String thirdPartyNo) 
    {
        this.thirdPartyNo = thirdPartyNo;
    }

    public String getThirdPartyNo() 
    {
        return thirdPartyNo;
    }

    public void setBalanceBefore(BigDecimal balanceBefore) 
    {
        this.balanceBefore = balanceBefore;
    }

    public BigDecimal getBalanceBefore() 
    {
        return balanceBefore;
    }

    public void setBalanceAfter(BigDecimal balanceAfter) 
    {
        this.balanceAfter = balanceAfter;
    }

    public BigDecimal getBalanceAfter() 
    {
        return balanceAfter;
    }

    public void setSourceOrgId(Long sourceOrgId) 
    {
        this.sourceOrgId = sourceOrgId;
    }

    public Long getSourceOrgId() 
    {
        return sourceOrgId;
    }

    public void setDelFlag(String delFlag) 
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("withdrawalId", getWithdrawalId())
            .append("userId", getUserId())
            .append("withdrawalAmount", getWithdrawalAmount())
            .append("actualAmount", getActualAmount())
            .append("feeAmount", getFeeAmount())
            .append("withdrawalStatus", getWithdrawalStatus())
            .append("withdrawalType", getWithdrawalType())
            .append("accountInfo", getAccountInfo())
            .append("accountName", getAccountName())
            .append("accountNumber", getAccountNumber())
            .append("bankName", getBankName())
            .append("bankBranch", getBankBranch())
            .append("applyTime", getApplyTime())
            .append("approveTime", getApproveTime())
            .append("processTime", getProcessTime())
            .append("completeTime", getCompleteTime())
            .append("rejectReason", getRejectReason())
            .append("remark", getRemark())
            .append("operatorId", getOperatorId())
            .append("operatorName", getOperatorName())
            .append("transactionNo", getTransactionNo())
            .append("thirdPartyNo", getThirdPartyNo())
            .append("balanceBefore", getBalanceBefore())
            .append("balanceAfter", getBalanceAfter())
            .append("sourceOrgId", getSourceOrgId())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("delFlag", getDelFlag())
            .toString();
    }
}
